


double tempFollow5Var = f2;
f2 = f5;
f5 = f13;
f13 = f11;
f11 = f14;
f14 = tempFollow5Var;


f0 = Math.sin( f7 / Math.max(.000000001,Math.abs(f4)) );



if(0 < f7 && f1 < 0) f1 -= 2*f7*f1;


double swap2Vars = f9;
f9 = f16;
f16 = swap2Vars;


f3 += f7;
if(1 < f3) f3 -= 2;
else if(f3 < 1) f3 += 2;


double swap2Vars = f4;
f4 = f14;
f14 = swap2Vars;


f1 -= f3;
if(1 < f1) f1 -= 2;
else if(f1 < 1) f1 += 2;

f15 *= f16;

f3 *= f12;


f9 = Math.max(f8,f0);





if(0 < f9){ 
	if(f0 < 0) f0 -= 2*f9*f0;
}else{ 
	if(0 < f0) f0 -= 2*f9*f0;
}

f7 *= f11;


f1 += f12;
if(1 < f1) f1 -= 2;
else if(f1 < 1) f1 += 2;


f7 = Math.max(f0,f13);


double swap2Vars = f15;
f15 = f5;
f5 = swap2Vars;


double tempFollow5Var = f3;
f3 = f14;
f14 = f16;
f16 = f2;
f2 = f6;
f6 = tempFollow5Var;





if(0 < f8){ 
	if(f4 < 0) f4 -= 2*f8*f4;
}else{ 
	if(0 < f4) f4 -= 2*f8*f4;
}









double radius = Math.sqrt(f13*f13 + f12*f12);
double angle = Math.asin(f12/Math.max(.000000001,radius));
if(f13 < 0) angle += Math.PI;
double speed = 1 / Math.max(.000000001, Math.abs(f16));
angle += f3*speed;
f13 = Math.max( -1., Math.min(radius*Math.cos(angle), 1.) );
f12 = Math.max( -1., Math.min(radius*Math.sin(angle), 1.) );




if(0 < f4){
	f0 *= 1 - f4;
	f0 += 0 < f16 ? f13 : f2;
}else{ 
	if(0 < f16){
		f13 *= 1 - (-f4);
		f13 += (-f4)*f0;
	}else{
		f2 *= 1 - (-f4);
		f2 += (-f4)*f0;
	}
}


f6 += f11;
if(1 < f6) f6 -= 2;
else if(f6 < 1) f6 += 2;


f13 = Math.max(f14,f9);


double tempFollow5Var = f12;
f12 = f7;
f7 = f2;
f2 = f16;
f16 = f6;
f6 = tempFollow5Var;




if(f7 > 0) f3 = (1-f7)*f3 + f7*f16;
else f16 = (1-(-f7))*f16 + (-f7)*f3;


f8 = Math.min(f3,f1);



if(0 < f14 && f7 < 0) f7 -= 2*f14*f7;




if(0 < f14){
	f16 *= 1 - f14;
	f16 += 0 < f12 ? f10 : f15;
}else{ 
	if(0 < f12){
		f10 *= 1 - (-f14);
		f10 += (-f14)*f16;
	}else{
		f15 *= 1 - (-f14);
		f15 += (-f14)*f16;
	}
}